From: Keir Fraser Date: Mon, 14 Dec 2009 07:56:21 +0000 (+0000) Subject: Fix losetup -f not working on SLES10 X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~12911 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=bbe624405fa32ec3a6cd0c57d4ffc2ea6cf625b9;p=xen.git Fix losetup -f not working on SLES10 Signed-off-by: Gary Grebus --- diff --git a/tools/hotplug/Linux/block b/tools/hotplug/Linux/block index 36c76f39bf..1d9c917c79 100644 --- a/tools/hotplug/Linux/block +++ b/tools/hotplug/Linux/block @@ -16,6 +16,26 @@ expand_dev() { echo -n $dev } +find_free_loopback_helper() { + local next_devnum=0 + local busy_devnum + while read busy_devnum; do + if [ "$next_devnum" != "$busy_devnum" ]; then + break + fi + let next_devnum=$next_devnum+1 + done + echo "/dev/loop${next_devnum}" +} + +# Not all distros have "losetup -f" +find_free_loopback_dev() { + local loopdev + loopdev=$(losetup -a | sed -e 's+^/dev/loop++' -e 's/:.*//' | find_free_loopback_helper) + if [ -n "$loopdev" ] && [ -b "$loopdev" ]; then + echo "$loopdev" + fi +} ## # check_sharing device mode @@ -270,7 +290,7 @@ mount it read-write in a guest domain." done fi - loopdev=$(losetup -f) + loopdev=$(find_free_loopback_dev) if [ "$loopdev" = '' ] then release_lock "block"